Add aviation units to KML writer.
authorrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Fri, 29 Oct 2010 13:56:57 +0000 (13:56 +0000)
committerrobertl <robertl@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Fri, 29 Oct 2010 13:56:57 +0000 (13:56 +0000)
gpsbabel/defs.h
gpsbabel/kml.c
gpsbabel/units.c
gpsbabel/xmldoc/formats/options/kml-units.xml

index f3ef4f81fd33de9d5f2ddd436412335288b3cc46..841caaf30550f215f122f47762ed603201c5bbc7 100644 (file)
@@ -1021,7 +1021,8 @@ typedef enum {
        units_unknown = 0,
        units_statute = 1,
        units_metric = 2,
-       units_nautical =3
+       units_nautical =3,
+       units_aviation =4
 } fmt_units;
 
 int    fmt_setunits(fmt_units);
index 5404440de33dbea62be68653b1d787b630500ea0..62b0667db3ecc684c2a9b843e35b140edeaf84e1 100644 (file)
@@ -130,7 +130,7 @@ arglist_t kml_args[] = {
         "Indicate direction of travel in track icons (default = 0)",
         "0", ARGTYPE_BOOL, ARG_NOMINMAX },
        {"units", &opt_units,
-        "Units used when writing comments ('s'tatute, 'm'etric,' 'n'autical)",
+        "Units used when writing comments ('s'tatute, 'm'etric,' 'n'autical, 'a'viation)",
         "s", ARGTYPE_STRING, ARG_NOMINMAX },
        {"labels", &opt_labels,
         "Display labels on track and routepoints  (default = 1)",
@@ -336,7 +336,8 @@ kml_wr_init(const char *fname)
                case 's': fmt_setunits(units_statute); break;
                case 'm': fmt_setunits(units_metric); break;
                case 'n': fmt_setunits(units_nautical); break;
-               default: fatal("Units argument '%s' should be 's' for statute units or 'm' for metric.", opt_units); break;
+               case 'a': fmt_setunits(units_aviation); break;
+               default: fatal("Units argument '%s' should be 's' for statute units, 'm' for metric, 'n' for nautical or 'a' for aviation.\n", opt_units); break;
        }
        /*
         * Reduce race conditions with network read link.
index f75ce1338a14b69d3c159ba37189f2c9a19493a8..2938bfa1ff0d565069870703a4060dc26c71b769 100644 (file)
@@ -30,6 +30,7 @@ fmt_setunits(fmt_units u)
        case units_statute:
        case units_metric:
        case units_nautical:
+       case units_aviation:
                units = u;
                return 0;
        default:
@@ -53,6 +54,7 @@ fmt_distance(const double distance_meters, char **tag)
                }
                break;
        case units_nautical: 
+       case units_aviation: 
                d = METERS_TO_NMILES(distance_meters);
                *tag = "NM";
                break;
@@ -81,6 +83,7 @@ fmt_altitude(const double distance_meters, char **tag)
 
        switch (units) {
        case units_statute: 
+       case units_aviation: 
                d = METERS_TO_FEET(distance_meters);
                *tag = "ft";
                break;
@@ -112,6 +115,7 @@ fmt_speed(const double distance_meters_sec, char **tag)
                *tag = "mph";
                break;
        case units_nautical:
+       case units_aviation:
                d = METERS_TO_NMILES(distance_meters_sec) * SECONDS_PER_HOUR ;
                *tag = "knts";
                break;
index 6d7a5957867d888c281625306dc9e063ae7f2069..733e74bb896f073001497b24cff45a5190385a21 100644 (file)
@@ -1,5 +1,5 @@
 <para>
 Units is a simple option.  Specify 's' for "statute" (miles, feet, and 
 other things that don't sensibly convert to each other, but are craved
-by Americans) or 'm' for "metric". Default is 's'.
+by Americans), 'm' for "metric", 'n' for "nautical" or 'a' for "aviation". Default is 's'.
 </para>